The rendering of three-dimensional (3D) graphical images, known as 3D rendering, is of interest in a variety of electronic games and other applications. Rendering is the general term that describes the overall multi-step process of generating a two-dimensional (2D) raster image of an object or scene described with vertex coordinate positions and topological connectivity information.
The 3D rendering process typically involves a number of operations, for example transforming object vertex positions from one coordinate space to another, projecting vertex positions onto two-dimensional polygons suitable for representation on a two-dimensional raster display or image, removing objects not visible within a projected two-dimensional area or facing away from the viewpoint, clipping the polygons against a view volume, scan converting and/or rasterizing the polygons to a set of discreet pixel sample positions, and shading and/or lighting the individual pixels using information interpolated from the values of attributes such as color associated with object vertex positions. In order to display an animation to the user, an application may render changing viewpoints or frames in rapid sequence, displaying each frame momentarily while rendering the subsequent frame.
Graphics Processing Units (GPUs) are specialized integrated circuit devices that are commonly used in graphics systems to accelerate the performance of a three-dimensional rendering application. GPUs are commonly used in conjunction with a Central Processing Unit (CPU) to generate three-dimensional images for one or more applications executing on a computer system. Modern GPUs typically utilize a pipeline of rendering operations executing in parallel for processing data associated with the 3D rendering process.